package com.example.service;

import cn.hutool.core.collection.CollUtil;
import com.example.common.enums.RoleEnum;
import com.example.entity.Ai;
import com.example.entity.Card;
import com.example.mapper.AiMapper;
import com.example.mapper.CardMapper;
import com.example.utils.Message;
import com.example.utils.MoonshotAiUtils;
import com.example.utils.TokenUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
/**
*  的逻辑层
**/
@Service
@RequiredArgsConstructor
public class AiService {

   private final AiMapper aiMapper;
    private final CardMapper cardMapper;

    /**
   * 增
   **/
   public String add(Ai ai) {

       List<Card> cards = cardMapper.selectAll(null);

       ai.setUserId(TokenUtils.getCurrentUser().getId());
       ai.setWho(0);
       aiMapper.insert(ai);
//       +ai.getContent()
       String give = "这是自习室管理系统，你是一个客服，以下是所有商品,包括会员卡和资料（书籍资料或视频资料），如果用户问，你可以介绍商品，如果没问你就别说：";
       for (Card card : cards){
           give += "商品名字" + card.getName() + "商品类型" + card.getType() + "单位" + card.getUnit() + "销量：" + card.getNum() + "价钱：" + card.getPrice() + " ";
       }
       give += "用户问：" + ai.getContent() + "，如果用户问到商品信息你再回答，没有问到就别说";

       List<Message> messages = CollUtil.newArrayList(
               new Message(RoleEnum.system.name(), "你是一个幽默的客服"),
               new Message(RoleEnum.user.name(), give)
       );

       String title = MoonshotAiUtils.chat2("moonshot-v1-8k", messages);
       ai.setContent(title);
       ai.setWho(1);
       aiMapper.insert(ai);

       return title;
   }

   /**
   * 删
   **/
   public void deleteById(Integer id) {
       aiMapper.deleteById(id);
   }

   /**
   * 批量删除
   **/
   public void deleteBatch(List<Integer> ids) {
       for (Integer id : ids) {
       aiMapper.deleteById(id);
       }
   }

   /**
   * 改
   **/
   public void updateById(Ai ai) {
       aiMapper.updateById(ai);
   }

   /**
   * 根据ID查询
   **/
   public Ai selectById(Integer id) {
       return aiMapper.selectById(id);
   }

   /**
   * 查询所有
   **/
   public List<Ai> selectAll(Ai ai) {
       return aiMapper.selectAll(ai);
   }

   /**
   * 分页查询
   **/
   public PageInfo<Ai> selectPage(Ai ai, Integer pageNum, Integer pageSize) {
       PageHelper.startPage(pageNum, pageSize);
       List<Ai> list = aiMapper.selectAll(ai);
       return PageInfo.of(list);
   }

}